perm filename DDHACK.DEA[UP,DOC] blob sn#331280 filedate 1978-02-02 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00005 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002				       D D H A C K
C00006 00003	III.  User command summary.
C00013 00004	IV.  Program escape commands.
C00014 00005	V.  Future Features
C00015 ENDMK
C⊗;
			       D D H A C K

I.  Introduction.

	DDHACK is a program to allow jobs running on remote ARPA net hosts
to be able to control the data disc display in a reasonably flexible manner.
DDHACK implements the TELNET protocol and talks directly to the remote
host over the network.


II.  How to use.

	The program is invoked by typing

			.r ddhack

When DDHACK starts, it prompts for a host, and the user may type in any host
name (host numbers and special sockets are not implemented).  DDHACK will connect
to the host using the regular TELNET ICP socket.

	The program provides access to any one of the 16 page printers available
to a job running on a display terminal.  The user, or the program running
on the PTY may, through issuing appropriate commands, select a page printer
to recieve text, display selected page printers, and control the screen position
and the number of lines in each page printer.

	The program also provides 10 buffers for inserting data disc display
programs.  These programs are constructed out of text sent to the program
from the PTY.  The user, or the program, may define a screen "window" associated
with each buffer by specifying the top line of the window, its width in characters
and its starting column.  Commands may be issued by either program or user
to run the display programs for selected windows at any time.  Data can be
moved from one buffer to another.  When data being sent to a selected buffer
causes the buffer to overflow, the next buffer in numeric sequence is selected
as the current buffer with the same characteristics as the former buffer,
and the rest of the data is transfered to the newly selected buffer.
[In the future, the user may designate certain buffers as "protected"]

III.  User command summary.

	All unrecognized commands are ignored

⊗nαβA	- Activate page printer n.  n is assumed to be a page printer deactivated
	  by a αβX.  The deleted text will magically reappear on the screen.
	  (not yet implemented)

⊗nαβB	- Selects buffer n as the current buffer.  All subsequent text sent by
	  the PTY will be stored in this buffer.  The window is initialized to
	  the current defaults: Top scan line = 36 (logical line 0, one line
	  below the WHO display) First column = 2, Line length = 35 text lines,
	  Line width = 80 characters)

⊗nαβD	- Runs the display program in buffer n.  If buffer n has not been
	  initialized, this command is a no-op.

αβE	- Turn on escape control character mode.  This feature is intended to
	  allow programs like INTERLISP to use the full SAIL character set.
	  Any ascii character in the range of 000 to 037 is translated into
	  an escape character (currently ↓) followed by the corresponding
	  upper case alphabetic character corresponding to the control character.
	  For example, ⊃ is transmitted as ↓Q.  Of course, the program running
	  on the PTY has to know what to do with the escape sequence.  This flag
	  is on by default.

βE	- Turns off escape control character mode.

⊗nαβF	- Set the first column of the window corresponding to the currently
	  selected buffer to n.  If n ≥ 80, or a page printer is currently
	  selected, this command is ignored.

⊗nαβH	- Set the character display charactaristics of the currently selected
	  buffer to n.  This command has no effect on page printers.
			n = 0  - Display normal characters
			n = 1  - Display double height characters
			n = 2  - Display double width characters
			n = 3  - Display double width, double height characters
	  All subsequent characters sent to the buffer are affected by this
	  command.  Each double character sent costs the equivalent of two
	  normal characters, and line and column increments are calculated
	  accordingly. (Not implemented yet)

αβK	- Kill all page printers and do a PPSEL 0.  It also erases all display 
          buffers and releases their memory.  This command is useful for
	  resetting the state of the world between programs.

⊗nαβL	- If a buffer is currently selected, then the number of lines in the
	  associated window is set to n.  If a page printer is selected, then
	  the number of lines in the page printer is set to n, and the page
	  printer will be glitched every line.

⊗n⊗mαβM - Move buffer n to buffer m, where the window associated with buffer m
	  has all the same characteristics (i.e. size, position, etc) as that of
          buffer n. (not yet implemented)

⊗n⊗mβM  - Move buffer n to buffer m, where buffer m window retains all its original
	  characteristics.  This works exactly as though the characters in buffer
	  n were sent to buffer m from the program.  In particular, the normal
	  procedures are followed for handeling overflow. (not yet implemented)

⊗nαβP	- Select page printer n as the current page printer.  If page printer
	  n has never been selected before, it is initialized to the system
	  default, namely, the entire screen.

αβQ	- Close the connection and prompt for another host

βQ      - Close the connection and exit to monitor

αβR	- Enter RAID or DDT, if present.  The only way to leave the debugger
	  after entering in this fasion is to jump to the label ENDCOM.

⊗nαβT	- Set the top line of the currently selected buffer or page printer
	  to be logical line n.

⊗nαβW	- Set the width of the window of the currently selected buffer to
	  be n.  If first column + n > 80, then this command is ignored.

⊗nαβX	- Turn off page printer n.  The page printer is not released, and
	  the text may be made to reappear by either selecting it, or
	  activating it with αβA. (not yet implemented)

⊗nαβZ	- Zero buffer n.  When the buffer is displayed, it window will be
	  blanked. (not yet implemented)

αβ⊗     - Lock the job in core (not recommended when > 4 display buffers
          are active)

β⊗	- Unlock the job
IV.  Program escape commands.

	The program can send commands to DDHACK by giving it an appropriate
escape sequence.  The current escape character is λ but is subject to
change.  Currently the program escape commands are a subset of the user
control commands, and are described below by reference to the identical
user command.

λnA	- ⊗nαβA

λnB	- ⊗nαβB

λnD	- ⊗nαβD

λnF	- ⊗nαβF

λnH	- ⊗nαβH

λK	- αβK

λnL	- ⊗nαβL

λnP	- ⊗nαβP

λnT	- ⊗nαβT

λnW	- ⊗nαβW

λnX	- ⊗nαβX

λnZ	- ⊗nαβZ
V.  Future Features

	These features may or may not get hacked in during the near future,
depending on how much time I have.  Some ideas are

	1. A graphics package allowing the designation of some buffers
	   as "graphics buffers".  The program can send escape commands
	   to draw lines, and perhaps shade in areas.

	2. The ability to draw little boxes around your windows.

	3. A feature similar to the βD feature in PTYJOB and TELNET, except
	   with the ability to specify different files for different page
	   printers, or associate a combination of page printers with a file.

	4. Various XGP hacks.